
package com.thinkgem.jeesite.common.component.redis.element;

import java.util.Set;

import redis.clients.jedis.Jedis;

/** 
 * 放置rds的公共类元素操作
 *
 */
public class RdsCommon {

	public RdsCommon(Jedis jedis) {
	    super();
	    this.jedis = jedis;
    }

	public Jedis getJedis() {
    	return jedis;
    }

	public void setJedis(Jedis jedis) {
    	this.jedis = jedis;
    }

	/**
	 * 自增key对应的value
	 * @param key
	 * @return
	 * 2014-10-27
	 */
	public Long incr(String key) {
		return getJedis().incr(key);
	}

	/**
	 * 让key对应的value自增指定数值integer
	 * @param key
	 * @param integer
	 * @return
	 * 2014-10-27
	 */
	public Long incrBy(String key,Long integer) {
		return getJedis().incrBy(key, integer);
	}

	/**
	 * 自减key对应的value
	 * @param key
	 * @return
	 * 2014-10-27
	 */
	public Long decr(String key){
		return getJedis().decr(key);
	}

	/**
	 * 让key对应的value自减指定数值integer
	 * @param key
	 * @param integer
	 * @return
	 * 2014-10-27
	 */
	public Long decrBy(String key,Long integer){
		return getJedis().decrBy(key, integer);
	}

	/**
	 * 删除key对应的value
	 * @param key
	 * @return
	 * 2014-10-27
	 */
	public Long del(String key) {
		return getJedis().del(key);
	}

	/**
	 * 通过正则匹配keys
	 * 
	 * @param pattern
	 * @return
	 */
	public Set<String> keys(String pattern) {
		return getJedis().keys(pattern);
	}

	/**
	 * 返回key对应的数据类型(none:不存在,string:字符,list,set,zset,hash)
	 * @param key
	 * @return
	 * 2014-10-27
	 */
	public String type(String key) {
		return getJedis().type(key);
	}

	/**
	 * 检查key是否已经存在
	 * 
	 * @param key
	 * @return
	 */
	public boolean exists(String key) {
		return getJedis().exists(key);
	}

	/**
	 * 获取当前库已存在的随机key,如果当前库为空,则返回空字符串
	 * @return
	 * 2014-10-27
	 */
	public String randomKey(){
		return getJedis().randomKey();
	}

	/**
	 * 更改key的名字.新名字如果存在会将其用旧名字的数据覆盖
	 * (即旧key的value保留并变更为新key,而原来新key对应的数据则被删除)
	 * @param oldkey
	 * @param newkey
	 * @return
	 * 2014-10-27
	 */
	public String rename(String oldkey,String newkey){
		return getJedis().rename(oldkey, newkey);
	}

	/**
	 * 更改key的名字.新名字如果存在则会报错(返回错误码)
	 * @param oldkey
	 * @param newkey
	 * @return
	 * 2014-10-27
	 */
	public Long renamenx(String oldkey,String newkey){
		return getJedis().renamenx(oldkey, newkey);
	}

	/**
	 * 设置key的过期时间,时间过期后自动删除
	 * (如果该key的value在过期前被修改,则当前的自动维护操作会被取消,即不再自动删除.同时该值也会被修改)
	 * @param key
	 * @param seconds (单位:s)
	 * @return
	 * 2014-10-27
	 */
	public Long expire(String key,int seconds){
		return getJedis().expire(key, seconds);
	}

	/**
	 * 查看key的过期时间
	 * @param key
	 * @return
	 * 2014-10-27
	 */
	public long ttl(String key){
		return getJedis().ttl(key);
	}


	private Jedis jedis;//当前客户端

}
